#include"NeuralNet.h"
#include "time.h"
#include <iostream>
#include <fstream>
#include <sstream>

using namespace std;
int main(){



    //训练数据
    vector<float> inputs, outputs;
    string pos_path="/mnt/d/code/DeepBloom-master/lib/pytorch/data/pos_test4.csv";
    string neg_path="/mnt/d/code/DeepBloom-master/lib/pytorch/data/neg_test4.csv";
    ifstream fin(pos_path);
    string line = "";
    while (getline(fin, line))   //整行读取，换行符“\n”区分，遇到文件尾标志eof终止读取
    {
        // line 中格式为string,且末尾带一个'\r'
        istringstream sin(line); //将整行字符串line读入到字符串流istringstream中
        getline(sin,line,'\r');
        float tmp;
        tmp = atof(line.c_str());
        inputs.push_back(tmp);
        outputs.push_back(1.0);
    }
    ifstream fin2(neg_path);
    while (getline(fin2, line))   //整行读取，换行符“\n”区分，遇到文件尾标志eof终止读取
    {
        // line 中格式为string,且末尾带一个'\r'
        istringstream sin(line); //将整行字符串line读入到字符串流istringstream中
        getline(sin,line,'\r');
        float tmp;
        tmp = atof(line.c_str());
        inputs.push_back(tmp);
        outputs.push_back(0.0);
    }
//    //建立一个数据类
//    Data* MyData=new Data(1,1);//1个输入，一个输出
//    int i=0;
    vector<float> in,out;
//    for(i=0;i<inputs.size();i++){
//        in.clear();
//        out.clear();
//        in.push_back(inputs[i]);
//        out.push_back(outputs[i]);
//        MyData->AddData(in,out);
//    }
//
//
//    NeuralNet* Brain=new NeuralNet(1,1,20,0.1,NeuralNet::ERRORSUM,true);//新建一个神经网络，输入神经元个数，输出神经元个数，隐藏层神经元个数，学习率，停止训练方法（次数或误差最小），是否输出误差值（用于观察是否收敛）
//    Brain->SetErrorThrehold(0.1);//设置误差，默认0.01
//    Brain->SetCount(10000);//设置次数，默认10000
//    Brain->Train(MyData);//通过数据，开始训练
//    Brain->saveNet("/mnt/d/code/Test_BP_Neural_Network/model/model4.txt");//保存网络

//        // 测试性能
        NeuralNet* Brain=new NeuralNet("/mnt/d/code/Test_BP_Neural_Network/model/model4.txt");//通过文件读取网络
        int i;
        clock_t start,finish;
        double duration;
        start=clock();
        for(i=0;i<inputs.size();i++){
            in.clear();
            in.push_back(inputs[i]);
            Brain->Update(in)[0];
           // cout<<Brain->Update(in)[0]<<endl;//通过输入得到输出
        }
        finish=clock();
        duration =(double )(finish-start)/CLOCKS_PER_SEC;
        cout << "查询时间："<<duration<<"s"<<endl;
        return 0;
}
